import java.util.Arrays;
import java.util.NoSuchElementException;

// 基于数组实现链表
public class Stack {

    //定义一个数组
    public int[] array;
    //定义数组的长度;从-1开始
    public int size=-1;
    //初始化一个数组
    public Stack() {
        array=new int[10];//默认十个元素
    }
    public Stack(int n) {
        array=new int[n];//默认n个元素
    }
    //入栈
    public void push(int value) {
        //扩容
        if(size==array.length-1) {
            int newLength = array.length*2;//扩容二倍
            array = Arrays.copyOf(array, newLength);
        }
        array[++size]=value;
    }
    //出栈,并返回栈顶原来的元素
    public int pop () {
        if(size==-1) {
            //没有可以出栈的元素
            System.exit(0);
        }
        int value=array[size--];
        return value;
    }
    // 查看栈顶元素
    public int peek() {

        if(size==-1) {
            System.out.println("该栈没有元素");
            System.exit(0);
        }
        return array[size];
    }

    // 获取当前栈的长度
    public int getSize() {
        return size+1;
    }

    @Override
    public String toString() {
    StringBuilder stringBuilder=new StringBuilder();
    stringBuilder.append('[');
        for (int i = 0; i <= size; i++) {
            stringBuilder.append(array[i]);
            if (i!=size) {
                stringBuilder.append(',');
            }
        }
        stringBuilder.append(']');
        return stringBuilder.toString();
    }

    public static void main(String[] args) {
        Stack stack=new Stack();
        stack.push(1);
        stack.push(2);
        stack.push(3);
        System.out.println(stack.peek());
        stack.push(4);
        stack.push(5);
        System.out.println(stack.size);
        System.out.println(stack);

    }
}